home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / pc / windows / qtw_201 / setup / samples / mmio_dh / datah.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-19  |  6.8 KB  |  209 lines

  1. /*
  2. ********************************************************************************
  3. **
  4. ** File: datah.h
  5. **
  6. ** Description:
  7. **
  8. **  Public header file for use with the Apple Data Handler.
  9. **
  10. ********************************************************************************
  11. */
  12. #ifndef DATAH_H
  13. #define DATAH_H
  14.  
  15. #include <qtw.h>
  16. #include <compmgr.h>
  17.  
  18. /* 4-byte types */
  19. #define ostypeDHLR QTFOURCC('d','h','l','r')
  20. #define ostypeALIS QTFOURCC('a','l','i','s')
  21. #define ostypeHNDL QTFOURCC('h','n','d','l')
  22. #define kDataHExtendedSchedule QTFOURCC('x','t','n','d')
  23.  
  24. /* data types */
  25. typedef long Fixed;
  26. typedef BOOL Boolean;
  27. typedef unsigned char Byte;
  28. typedef Byte __far *Ptr;
  29.  
  30. /* error codes */
  31. #define dataReadErr             -1
  32. #define dataReadError           -1
  33.  
  34. typedef enum DataHUseFlagsRecord {
  35.     kDataHCanRead               = 1L<<0,
  36.     kDataHSpecialRead           = 1L<<1,
  37.     kDataHSpecialReadFile       = 1L<<2,
  38.     kDataHCanWrite              = 1L<<3,
  39.     kDataHSpecialWrite          = 1L<<4,
  40.     kDataHSpecialWriteFile      = 1L<<5,
  41.     kDataHCanStreamingWrite     = 1L<<6,
  42.     kDataHMustCheckDataRef      = 1L<<7
  43.     } DataHUseFlags;
  44.  
  45. typedef struct DataHVolumeListRecord {
  46.     short   vRefNum;
  47.     long    flags;
  48.     } DataHVolumeListRecord, far *DataHVolumeListPtr, far * far *DataHVolumeList;
  49.  
  50. typedef struct DataHScheduleRecord {
  51.     TimeRecord  timeNeededBy;
  52.     long        extendedID;
  53.     long        extendedVers;
  54.     Fixed       priority;
  55.     } DataHScheduleRecord, far *DataHSchedulePtr;
  56.  
  57. typedef void (far *DHCompleteProc)(Ptr request, long refcon, OSErr err);
  58.         
  59. /* the selector ids for the data handler functions */
  60. enum {
  61.  
  62.     /* these functions are common to all components */
  63.     kDataUnregisterSelector             = -7,
  64.     kDataTargetSelector                 = -6,
  65.     kDataRegisterSelector               = -5,
  66.     kDataVersionSelector                = -4,
  67.     kDataCanDoSelector                  = -3,
  68.     kDataCloseSelector                  = -2,
  69.     kDataOpenSelector                   = -1,
  70.  
  71.     /* these functions are common to all DataHandler components */
  72.     kDataGetDataSelector                = 2,
  73.     kDataPutDataSelector                = 3,
  74.     kDataFlushDataSelector              = 4,
  75.     kDataOpenForWriteSelector           = 5,
  76.     kDataCloseForWriteSelector          = 6,
  77.     kDataOpenForReadSelector            = 8,
  78.     kDataCloseForReadSelector           = 9,
  79.     kDataSetDatRefSelector              = 10,
  80.     kDataGetDataRefSelector             = 11,
  81.     kDataCompareDataRefSelector         = 12,
  82.     kDataTaskSelector                   = 13,
  83.     kDataScheduleDataSelector           = 14,
  84.     kDataFinishDataSelector             = 15,
  85.     kDataFlushCacheSelector             = 16,
  86.     kDataResolveDataRefSelector         = 17,
  87.     kDataGetFileSizeSelector            = 18,
  88.     kDataCanUseDataRefSelector          = 19,
  89.     kDataGetVolumeListSelector          = 20,
  90.     kDataWriteSelector                  = 21,
  91.     kDataPreextendSelector              = 22,
  92.     kDataSetFileSizeSelector            = 23,
  93.     kDataGetFreeSpaceSelector           = 24,
  94.     kDataCreateFileSelector             = 25,
  95.     kDataGetPreferredBlockSizeSelector  = 26,
  96.     kDataGetDeviceIndexSelector         = 27,
  97.     /* 28 and 29 unused */
  98.     kDataGetScheduleAheadTimeSelector   = 30,
  99.         
  100.     /* these functions are specific to the Apple Data Handler component */
  101.     kDataPlaybackHintsSelector          = 0x100+3,
  102.     
  103.     kDataSetOSFileReferenceSelector     = 0x200+4,
  104.     kDataGetOSFileReferenceSelector     = 0x200+5
  105.     
  106. };
  107.  
  108. /*
  109. ** this allows the same header file to be used for the dhlr and
  110. ** it's clients
  111. */
  112. #ifdef INTERNAL_DHLR
  113.   #define DHLR_FPARM1 STKOFF_CMP so, LPVOID instanceStorage,
  114.   #define DHLR_FPARM2 STKOFF_CMP so, LPVOID instanceStorage
  115. #else
  116.   #define DHLR_FPARM1 ComponentInstance ci,
  117.   #define DHLR_FPARM2 ComponentInstance ci
  118. #endif
  119.  
  120. /* the data handler function prototypes */
  121. #ifdef __cplusplus
  122. extern "C" {
  123. #endif
  124.  
  125. ComponentResult QTAPI DataHCanUseDataRef (DHLR_FPARM1
  126.     Handle dataRef,
  127.     DataHUseFlags far *useFlags);
  128. ComponentResult QTAPI DataHGetVolumeList (DHLR_FPARM1
  129.     DataHVolumeList far *volumeList);
  130. ComponentResult QTAPI DataHGetDeviceIndex (DHLR_FPARM1
  131.     long far *deviceIndex);
  132. ComponentResult QTAPI DataHSetDataRef (DHLR_FPARM1
  133.     Handle dataRef);
  134. ComponentResult QTAPI DataHGetDataRef (DHLR_FPARM1
  135.     Handle far *dataRef);
  136. ComponentResult QTAPI DataHCompareDataRef (DHLR_FPARM1
  137.     Handle dataRef,
  138.     Boolean far *equal);
  139. ComponentResult QTAPI DataHResolveDataRef (DHLR_FPARM1
  140.     Handle theDataRef,
  141.     Boolean far *wasChanged,
  142.     Boolean userInterfaceAllowed);
  143. ComponentResult QTAPI DataHOpenForRead (DHLR_FPARM2);
  144. ComponentResult QTAPI DataHCloseForRead (DHLR_FPARM2);
  145. ComponentResult QTAPI DataHOpenForWrite (DHLR_FPARM2);
  146. ComponentResult QTAPI DataHCloseForWrite (DHLR_FPARM2);
  147. ComponentResult QTAPI DataHGetData (DHLR_FPARM1
  148.     Handle h,
  149.     long hOffset,
  150.     long offset,
  151.     long size);
  152. ComponentResult QTAPI DataHPutData (DHLR_FPARM1
  153.     Handle h,
  154.     long hOffset,
  155.     long far *offset,
  156.     long size);
  157. ComponentResult QTAPI DataHScheduleData (DHLR_FPARM1
  158.     Ptr placeToPutDataPtr,
  159.     long fileOffset,
  160.     long dataSize,
  161.     long refCon,
  162.     DataHSchedulePtr scheduleRec,
  163.     DHCompleteProc completionRtn);
  164. ComponentResult QTAPI DataHFinishData (DHLR_FPARM1
  165.     Ptr placeToPutDataPtr,
  166.     Boolean cancel );
  167. ComponentResult QTAPI DataHTask (DHLR_FPARM2);
  168. ComponentResult QTAPI DataHFlushCache (DHLR_FPARM2);
  169. ComponentResult QTAPI DataHFlushData (DHLR_FPARM2);
  170. ComponentResult QTAPI DataHGetFileSize (DHLR_FPARM1
  171.     long far *fileSize);
  172. ComponentResult QTAPI DataHSetFileSize (DHLR_FPARM1
  173.     long fileSize);
  174. ComponentResult QTAPI DataHCreateFile (DHLR_FPARM1
  175.     OSType creator,
  176.     Boolean deleteExisting);
  177. ComponentResult QTAPI DataHGetPreferredBlockSize (DHLR_FPARM1
  178.     long far *blockSize);
  179. ComponentResult QTAPI DataHGetFreeSpace (DHLR_FPARM1
  180.     unsigned long far *freeSize);
  181. ComponentResult QTAPI DataHPreextend (DHLR_FPARM1
  182.     long maxToAdd,
  183.     long far *spaceAdded);
  184. ComponentResult QTAPI DataHWrite (DHLR_FPARM1
  185.     Ptr data,
  186.     long offset,
  187.     long size,
  188.     DHCompleteProc completion,
  189.     long refcon);
  190. ComponentResult QTAPI DataHGetScheduleAheadTime (DHLR_FPARM1
  191.     long far *millisecs);
  192. ComponentResult QTAPI DataHPlaybackHints (DHLR_FPARM1
  193.     long flags,
  194.     unsigned long minFileOffset,
  195.     unsigned long maxFileOffset,
  196.     long bytesPerSecond);
  197. ComponentResult QTAPI DataHSetOSFileReference (DHLR_FPARM1
  198.     long fileRef,
  199.     long openFlags);
  200. ComponentResult QTAPI DataHGetOSFileReference (DHLR_FPARM1
  201.     long far *fileRef,
  202.     long far *openFlags);
  203.  
  204. #ifdef __cplusplus
  205. }
  206. #endif
  207.  
  208. #endif /* DATAH_H */
  209.